const WebSocket = require('ws');
const { v4: uuidv4 } = require('uuid');
//记录在线的用户信息，使用一个Map类型
const users = new Map()
//保存在线用户信息的

// 数据结构如下
// 键：值对，Map对象类型
// uid:{
//     name:"",
//     avatar:"",
//     socket:socket,
// }

//Map对象数据操作步骤
// 添加键值对
// users.set(uid,socket)
// 获取值
// users.get(uid)
// 检查键是否存在
// users.has(uid)
// 删除键值对
// users.delete(uid)


//创建一个函数
// ws.js包使用函数
const initWebSocket = (server) => {
    // 创建一个websocket实例进行连接
    const wss = new WebSocket.Server({ server });

    wss.on('connection', (socket) => {//每一个连接都会产生一个socket对象，对每一个socket对象进行操作就可以进行发送消息操作
        console.log('WebSocket 连接成功');

        uid = uuidv4()//为每一个用户生成一个唯一的用户uid
        console.log(uid)

        socket.on('message', (message) => {
            //将收到的信息使用tostring方法转化为对应的显示格式
            console.log('收到客户端消息：', message.toString('utf-8'));
            socket.send('Hello, WebSocket Client!');
        });

        socket.on('close', (code, reason) => {
            console.log('WebSocket 连接已关闭', code, reason);
        });
    });
};

module.exports = initWebSocket;
